package com.tuozixuan.base;

import com.google.common.base.Preconditions;

public class PreconditionsDemo {

	public static void main(String[] args) {
		
		int i = 2;
		int j = 1;
		Preconditions.checkArgument(1 > 2);
		Preconditions.checkArgument(1 > 2, "error msg");
		Preconditions.checkArgument(i < j, "Expected i < j, but %s > %s", i, j);
		
		// 检查value不为null， 直接返回value NullPointerException
		String name = null;
		Preconditions.checkNotNull(name, "Expected name not null");
		
		// 检查对象的一些状态，不依赖方法参数 IllegalStateException
		boolean state = false;
		Preconditions.checkState(state, "state不正確");
		
		// 检查index是否为在一个长度为size的list， string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list， string或array， 只需传入大小。返回index。  IndexOutOfBoundsException
		int index = Preconditions.checkElementIndex(4, 5, "desc");
		System.out.println(index);
		
		index = Preconditions.checkPositionIndex(5, 5, "desc");
		System.out.println(index);
		
		// 检查[start, end)是一个长度为size的list， string或array合法的范围子集。伴随着错误信息 IndexOutOfBoundsException
		Preconditions.checkPositionIndexes(4, 5, 5);
	}

}
